/*
*  Copyright (c) 2023 Otávio Santana and others
*   All rights reserved. This program and the accompanying materials
*   are made available under the terms of the Eclipse Public License v1.0
*   and Apache License v2.0 which accompanies this distribution.
*   The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
*   and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
*
*   You may elect to redistribute this code under either of these licenses.
*
*   Contributors:
*
*   Otavio Santana
*/
package {{packageName}};

import org.eclipse.jnosql.lite.mapping.metadata.LiteConstructorMetadata;
import org.eclipse.jnosql.mapping.metadata.ParameterMetaData;

import javax.annotation.processing.Generated;
import java.util.List;
import java.util.ArrayList;

@Generated(value= "JNoSQL Lite ConstructorMetadata Generator", date = "{{now}}")
public final class {{className}} implements LiteConstructorMetadata {

    private final List<ParameterMetaData> parameters = new ArrayList<>();

    public {{className}}() {
    {{#parameters}}
        this.parameters.add(new {{.}}());
    {{/parameters}}
    }

    @Override
    public boolean isDefault() {
        return false;
    }

    @Override
    public List<ParameterMetaData> parameters() {
        return parameters;
    }

    @Override
    public <T> T build(Object[] parameters) {
      return (T) new {{entityName}}({{constructorParameters}});
    }
}
